/**
 *
 *@Author:yangwenbo
 *@Date:2021/5/14 19:09
 ***/

const express = require('express');
const app = express();
const bodyParser = require('body-parser'); // 用来解析post请求
// const expressJwt = require('express-jwt'); // 设置token
const multer = require('multer'); // 解析post上传文件
const urlLib = require('url'); // 解析get请求url参数
const path =require('path') // 系统提高全局路径
//
const expressSession = require('express-session');
// cookie
const cookie = require('cookie-parser');

const {
    verifyToken,
    loginHandle,
    handleRegister,
    getCode,
    ceshi,
    uploadPictureHandle,
    publishMood,
    newMood,
    publishHandle,
    getBlogList,
    getBlogDetails,
    handleLikeCount,
    publishMoment,
    adminBlogList,
    approvedHandle,
    removeHandle
} = require('./lib/router'); // 路由

app.use('/static',express.static('www')); // 带有/static 的静态文件夹
app.use(bodyParser.urlencoded({
    extended: true, // 扩展模式
}));
// 接收body请求参数
app.use(bodyParser.json());
// 接收post上传文件
const upload = multer({
   dest: path.join(__dirname,'./www/images')  // 自定义文件上传目录
})
app.use(upload.any());
app.use(cookie());
app.use(expressSession({
    name: 'wenbo',
    secret: 'secret',  // 对session id 相关的cookie 进行签名
    resave: true,
    saveUninitialized: false, // 是否保存未初始化的会话
    cookie: {
        maxAge: 1 * 60*60  // 设置 session 的有效时间，单位毫秒
    }
}))
// app.use(expressJwt(JWT_CONFIG).unless({
//     path: [
//         '/api/blog/login',
//         '/www/static',
//         '/api/blog/register',
//         '/api/blog/code'
//     ]  // ⽩白名单,除了了这⾥里里写的地址，其他的URL都需要验证
// }));
//解决跨域问题
app.all('/*', function(req, res, next) {
    res.header('Access-Control-Allow-Origin', '*')
    res.header('Access-Control-Allow-Headers', '*')
    res.header('Access-Control-Allow-Methods', 'PUT,POST,GET,DELETE,OPTIONS')
    res.header('X-Powered-By', ' 3.2.1')
    res.header('Content-Type', 'application/json;charset=utf-8')
    next()
})
// 验证token
app.use("/api/*", verifyToken);
// 验证码
app.get('/open/api/blog/code', getCode);
// 注册
app.post('/open/api/blog/register', handleRegister);
// 登录
app.post('/static/open/api/blog/login',  loginHandle)
// 测试
app.get('/open/api/blog/user',ceshi);
// 发表心情
app.get('/api/blog/publishMood',publishMood);
// 查询最新心情
app.get('/api/blog/newMood',newMood);
// 发布说说和博客
app.post('/api/blog/publish',publishHandle);
// 获取说说和博客列表
app.post('/api/blog/blogList',getBlogList);
// 后台审核博客说说列表
app.get('/static/open/adminBlogList', adminBlogList)
// 后台通过博客
app.post('/open/api/blog/adopt', approvedHandle);
// 后台审核不通过
app.post('/open/api/blog/remove', removeHandle)
// 获取博客列表详情
// app.get('/api/blog/details',getBlogDetails);
// 点赞
app.get('/api/blog/likeCount',handleLikeCount);
// 发布评论
app.get('/api/blog/publishMoment',publishMoment)
// 测试
app.get('/api/blog/aaa',( req, res ) => {
    // 获取taoken
    const token = req.headers.authorization.split(' ')[1];
    // 验证token
    jwt.verify(token, JWT_CONFIG.secret, ( err, decoded) => {
        if ( err ) {
            // 返回错误信息
            res.send({
                success: false,
                message: '123'
            });
            return
        }
    })
    res.send({
        name: 'aaa',
    })
});

// 上传图片
app.post('/api/blog/uploadPicture', uploadPictureHandle);

const server = app.listen(3000, () =>{
    console.log('服务已启动 访问127.0.0.1:3000', server.address().address)
});
